package com.his.patiinfobasic.service.Imp;

import com.his.hospital.dao.DictHospitalMapper;
import com.his.hospital.entity.DictHospital;
import com.his.hospital.service.HospitalService;
import com.his.hospital.vo.HospitalVo;
import com.his.login.entity.DictEmployee;
import com.his.patiinfobasic.dao.PatiinfobasicContactorMapper;
import com.his.patiinfobasic.dao.PatiinfobasicMapper;
import com.his.patiinfobasic.dao.PatiinfocardMapper;
import com.his.patiinfobasic.entity.PatiInfoDetail;
import com.his.patiinfobasic.entity.Patiinfobasic;
import com.his.patiinfobasic.entity.PatiinfobasicContactor;
import com.his.patiinfobasic.entity.Patiinfocard;
import com.his.patiinfobasic.service.PatiinfobasicService;
import com.his.patiinfobasic.vo.PatiinfobasicVo;
import com.his.patiinfobasic.vo.PatiinfobasicVoo;
import com.his.sysconfig.dao.SysconfigMapper;
import com.his.sysconfig.entity.Sysconfig;
import com.his.sysconfig.service.SysconfigService;
import com.his.sysconfig.vo.SysconfigVo;
import com.xiao.common.exception.HisExecption;
import com.xiao.common.util.BeanUtil;
import com.xiao.common.util.WorkIdUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Author xiaoxiaoping
 * @Date 2020/2/6 11:42
 * @Version 1.0
 */
@Service
public class PatiinfobasicImpl implements PatiinfobasicService {
    @Resource
    PatiinfobasicMapper patiinfobasicMapper;
    @Resource
    PatiinfobasicContactorMapper patiinfobasicContactorMapper;
    @Resource
    PatiinfocardMapper patiinfocardMapper;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String save(PatiinfobasicVo patiinfobasicVo, DictEmployee dictEmployee) {
        Patiinfobasic patiinfobasic = BeanUtil.copyBean(patiinfobasicVo, Patiinfobasic.class);

         String patiid= WorkIdUtil.nextId();
        //处理身份证号
        if(!StringUtils.isEmpty(patiinfobasic.getIdcard())){
            Patiinfocard patiinfocard = new Patiinfocard();
            patiinfocard.setCardid(patiinfobasic.getIdcard());
            patiinfocard.setCardtypeid("0001");
            List<Patiinfocard> list = patiinfocardMapper.selectByEntity(patiinfocard);
            if(list.size()>0){
                throw HisExecption.serverErrException("病人信息已存在!");
            }
            patiinfocard.setPatiid(patiid);
            patiinfocard.setLockflag(0);
            patiinfocard.setHospid(dictEmployee.getHOSPID());
            patiinfocardMapper.insertAllColumn(patiinfocard);
        }
        patiinfobasic.setPatiid(patiid) ;
        com.xiao.common.entity.DictEmployee dictEmployee1 = BeanUtil.copyBean(dictEmployee,com.xiao.common.entity.DictEmployee.class);
        patiinfobasic.setCreateUser(dictEmployee1);
        patiinfobasic.setHospid(dictEmployee.getHOSPID());
        patiinfobasicMapper.insertAllColumn(patiinfobasic);
        List<PatiinfobasicContactor> contactorList=patiinfobasicVo.getContactorList();
        if(contactorList.size()>0){
            for(PatiinfobasicContactor patiinfobasicContactor:contactorList){
                patiinfobasicContactor.setPatiid(patiid);
                patiinfobasicContactorMapper.insertAllColumn(patiinfobasicContactor);
            }
        }
        return patiid;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(PatiinfobasicVoo patiinfobasicVoo ) {

        Patiinfobasic patiinfobasic = BeanUtil.copyBean(patiinfobasicVoo, Patiinfobasic.class);
        patiinfobasicMapper.updateId(patiinfobasic);
        List<PatiinfobasicContactor> contactorList=patiinfobasicVoo.getContactorList();
        //处理身份证号
        if(!StringUtils.isEmpty(patiinfobasic.getIdcard())){
            Patiinfocard patiinfocard = new Patiinfocard();
            patiinfocard.setCardid(patiinfobasic.getIdcard());
            patiinfocard.setCardtypeid("0001");
            patiinfocard.setPatiid(patiinfobasicVoo.getPatiid());
            patiinfocardMapper.updateById(patiinfocard);
        }
        if(contactorList.size()>0){
            patiinfobasicContactorMapper.delete(patiinfobasicVoo.getPatiid());
            for(PatiinfobasicContactor patiinfobasicContactor:contactorList){
                patiinfobasicContactor.setPatiid(patiinfobasicVoo.getPatiid());
                patiinfobasicContactorMapper.insertAllColumn(patiinfobasicContactor);
            }
        }
    }

    @Override
    public void select(PatiinfobasicVo patiinfobasicVo) {
        Patiinfobasic patiinfobasic = BeanUtil.copyBean(patiinfobasicVo, Patiinfobasic.class);
        patiinfobasicMapper.select(patiinfobasic);
    }

    @Override
    public void selectpaid(PatiinfobasicVoo patiinfobasicVoo) {
        Patiinfobasic patiinfobasic = BeanUtil.copyBean(patiinfobasicVoo, Patiinfobasic.class);
        patiinfobasicMapper.select(patiinfobasic);
    }

    @Override
    public PatiInfoDetail selectById(String patiId) {
        PatiInfoDetail patiInfoDetail = new PatiInfoDetail();
        patiInfoDetail.setPatiinfobasic(patiinfobasicMapper.selectById(patiId));
        patiInfoDetail.setContactorList(patiinfobasicContactorMapper.selectById(patiId));
        return patiInfoDetail;
    }
}

